#ifndef __BSP_RTC_H
#define __BSP_RTC_H

#include <time.h>
#include <stdio.h>

#include "gpio.h"
#include "rtc.h"
#include "reset.h"
#include "lpm.h"


/***********************************************************************
对time.h中的结构体解释如下：

struct tm {  
int tm_sec;  秒 – 取值区间为[0,59]   
int tm_min;  分 - 取值区间为[0,59]   
int tm_hour;  时 - 取值区间为[0,23]   
int tm_mday;  一个月中的日期 - 取值区间为[1,31] 
int tm_mon;   月份（从一月开始，0代表一月） - 取值区间为[0,11]   
int tm_year;  年份，其值 + 1900 = 实际年份  
int tm_wday;  星期 – 取值区间为[0,6]，其中0代表星期天，1代表星期一，以此类推  
int tm_yday;  从每年的1月1日开始的天数 – 取值区间为[0,365]，其中0代表1月1日，1代表1月2日，以此类推  
int tm_isdst; 夏令时标识符，实行夏令时的时候，tm_isdst为正。不实行夏令时的进候，tm_isdst为0；不了解情况时，tm_isdst()为负。
};  

struct tm* stctime;

time_t长整型，时间戳: 一般用来表示从1970-01-0100:00:00时以来的秒数
    
**************************************************************************/
typedef enum 
{ 
	NotSetTime = 0,
	SetTime,
}emRTC_Set;

//10进制 闹钟结构体
typedef struct
{
    uint8_t  Second;   
    uint8_t  Minute; 
    uint8_t  Hour;   
    uint8_t  WeekMask;   //Max :0x7f
}stc_RTC_Alarm;

void BSP_IntelligentRtc_init(void);

en_result_t BSP_Rtc_ReadDateTime(struct tm *pstcTimeDate);
en_result_t BSP_Rtc_SetTime(struct tm *pstcTimeDate);
en_result_t BSP_Rtc_SetAlarm(stc_RTC_Alarm *Alarm);

#endif

